\section{运算符}
运算符是可以通过给出的一或多个值（用编程行话来说，表达式）来产生另一个值（因而整个结构成为一个表达式）的东西。

运算符可按照其能接受几个值来分组。一元运算符只能接受一个值，例如 !（逻辑取反运算符）或 ++（递增运算符）。二元运算符可接受两个值，例如熟悉的算术运算符 +（加）和 -（减），大多数 PHP 运算符都是这种。最后是唯一的三元运算符 ? :，可接受三个值；通常就简单称之为“三元运算符”。

\subsection{算数运算符}
算数运算符用来进行常规数学计算，这些运算符都有：
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
  \centering
  \caption{算数运算符}
    \begin{tabular}{lll}
    \toprule
    \multicolumn{1}{l}{\textbf{例子}} & \multicolumn{1}{l}{\textbf{名称}} & \multicolumn{1}{l}{\textbf{结果}} \\
    \midrule
    -\$a    & 取反      & \$a 的负值。 \\
    \$a + \$b & 加法      & \$a 和 \$b 的和。 \\
    \$a - \$b & 减法      & \$a 和 \$b 的差。 \\
    \$a * \$b & 乘法      & \$a 和 \$b 的积。 \\
    \$a / \$b & 除法      & \$a 除以 \$b 的商。 \\
    \$a \% \$b & 取模      & \$a 除以 \$b 的余数。 \\
    \bottomrule
    \end{tabular}%
  \label{tab:算数运算符}%
\end{table}%

\subsection{赋值运算符}
基本的赋值运算符是“=”。它实际上意味着把右边表达式的值赋给左边的运算数。赋值运算表达式的值也就是所赋的值。赋值运算将原变量的值拷贝到新变量中（传值赋值），所以改变其中一个并不影响另一个。PHP 支持引用赋值，使用“\$var = \&\$othervar;”语法。引用赋值意味着两个变量指向了同一个数据，没有拷贝任何东西。

\begin{lstlisting}
<?php
$a = 3;
$b = &$a; // $b 是 $a 的引用

print "$a\n"; // 输出 3
print "$b\n"; // 输出 3

$a = 4; // 修改 $a

print "$a\n"; // 输出 4
print "$b\n"; // 也输出 4，因为 $b 是 $a 的引用，因此也被改变
?>
\end{lstlisting}

\subsection{位运算符}
位运算符允许对整型数中指定的位进行求值和操作。由于位运算不是特别常用，故在此不详细介绍。

\subsection{比较运算符}
比较运算符，允许对两个值进行比较。

% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
  \centering
  \caption{比较运算符}
    \begin{tabular}{lll}
    \toprule
    \multicolumn{1}{l}{\textbf{例子}} & \multicolumn{1}{l}{\textbf{名称}} & \multicolumn{1}{l}{\textbf{结果}} \\
    \midrule
    \$a == \$b & 等于      & TRUE，如果类型转换后 \$a 等于 \$b。 \\
    \$a === \$b & 全等      & TRUE，如果 \$a 等于 \$b，并且它们的类型也相同。 \\
    \$a != \$b & 不等      & TRUE，如果类型转换后 \$a 不等于 \$b。 \\
    \$a <> \$b & 不等      & TRUE，如果类型转换后 \$a 不等于 \$b。 \\
    \$a !== \$b & 不全等     & TRUE，如果 \$a 不等于 \$b，或者它们的类型不同。 \\
    \$a < \$b & 小与      & TRUE，如果 \$a 严格小于 \$b。 \\
    \$a > \$b & 大于      & TRUE，如果 \$a 严格大于 \$b。 \\
    \$a <= \$b & 小于等于    & TRUE，如果 \$a 小于或者等于 \$b。 \\
    \$a >= \$b & 大于等于    & TRUE，如果 \$a 大于或者等于 \$b。 \\
    \bottomrule
    \end{tabular}%
  \label{tab:比较运算符}%
\end{table}%

\subsection{错误控制运算符}
PHP 支持一个错误控制运算符：@。当将其放置在一个 PHP 表达式之前，该表达式可能产生的任何错误信息都被忽略掉。

\subsection{执行运算符}
PHP 支持一个执行运算符：反引号（`）。注意这不是单引号！PHP 将尝试将反引号中的内容作为外壳命令来执行，并将其输出信息返回。例如：

\begin{lstlisting}
<?php
$output = `dir`;
echo "<pre>$output</pre>";
?>
\end{lstlisting}

运行结果如下图\ref{fig:PHP-exec}所示：

\begin{figure}[h]
	\centering
	\includegraphics{raw/PHP-exec.jpg}
	\caption{执行运算符效果}
	\label{fig:PHP-exec}
\end{figure}

\subsection{递增递减运算符}
PHP 支持 C 风格的前／后递增与递减运算符。详见表\ref{tab:递增递减运算符}
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[ht]
  \centering
  \caption{递增递减运算符}
    \begin{tabular}{lll}
    \toprule
    \multicolumn{1}{l}{\textbf{例子}} & \multicolumn{1}{l}{\textbf{名称}} & \multicolumn{1}{l}{\textbf{效果}} \\
    \midrule
    ++\$a   & 前加      & \$a 的值加一，然后返回 \$a。 \\
    \$a++   & 后加      & 返回 \$a，然后将 \$a 的值加一。 \\
    --\$a   & 前减      & \$a 的值减一， 然后返回 \$a。 \\
    \$a--   & 后减      & 返回 \$a，然后将 \$a 的值减一。 \\
    \bottomrule
    \end{tabular}%
  \label{tab:递增递减运算符}%
\end{table}%

\subsection{逻辑运算符}
逻辑运算符用来进行逻辑运算，见表\ref{tab:PHP逻辑运算符}，表达式的值最终为布尔值。
% Table generated by Excel2LaTeX from sheet 'Sheet3'
\begin{table}[htbp]
  \centering
  \caption{逻辑运算符}
    \begin{tabular}{lll}
    \toprule
    \multicolumn{1}{l}{\textbf{例子}} & \multicolumn{1}{l}{\textbf{名称}} & \multicolumn{1}{l}{\textbf{结果}} \\
    \midrule
    \$a and \$b & 逻辑与 & TRUE，如果 \$a 和 \$b 都为 TRUE。 \\
    \$a or \$b & 逻辑或 & TRUE，如果 \$a 或 \$b 任一为 TRUE。 \\
    \$a xor \$b & 逻辑异或 & TRUE，如果 \$a 或 \$b 任一为 TRUE，但不同时是。 \\
    ! \$a   & 逻辑非 & TRUE，如果 \$a 不为 TRUE。 \\
    \$a \&\& \$b & 逻辑与 & TRUE，如果 \$a 和 \$b 都为 TRUE。 \\
    \$a || \$b & 逻辑或 & TRUE，如果 \$a 或 \$b 任一为 TRUE。 \\
    \bottomrule
    \end{tabular}%
  \label{tab:PHP逻辑运算符}%
\end{table}%

\subsection{字符串运算符}
有两个字符串（string）运算符。第一个是连接运算符（“.”），它返回其左右参数连接后的字符串。第二个是连接赋值运算符（“.=”），它将右边参数附加到左边的参数之后。

\subsection{类型运算符}
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例。
